We are currently not robust against model changes or
widget invalidations, so we can actually end up in
situations where we run out of items here. Handle
the failure a bit more gracefully, by returning NULL.
This is good enough to make scrolling work okish most
of the time. We still need a proper fix to handle
other situations.
if (pos % self->n_columns)
{
skip = self->n_columns - pos % self->n_columns;
- g_assert (n_items > skip);
+ if (n_items <= skip)
+ {
+ g_warning ("ran out of items");
+ if (position)
+ *position = 0;
+ if (offset)
+ *offset = 0;
+ if (size)
+ *size = 0;
+ return NULL;
+ }
n_items -= skip;
pos += skip;
}